#ifndef __BSP_TM1640_H__
#define __BSP_TM1640_H__
#include <stm32f1xx.h>
#include "bsp_gpioband.h"

#define   ADDR_START1640        0XC0  
  
#define     DSP1640_DIS     0  
#define     DSP1640_ENB     1  
#define		NUM_TL			(4) //左上
#define		NUM_TR			(3) //右上
#define		NUM_SL			(2) //左下
#define		NUM_SR			(1) //右下
#define		NUM_LIGHT		(5) //亮度
#define		NUM_LL			(6) //大数字左
#define		NUM_LM			(7) //大数字中
#define		NUM_LR			(8) //大数字右
#define		NUM_MAX			(0xff)
/* 
控制显示 
0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f 分别对应 
1/16,  2/16,  4/16,  10/16, 11/16, 12/16, 13/16, 14/16    
 
设置数据，0x40,0x44分别对应地址自动加一和固定地址模式      
*/  
 
#define			SET_DATA_INSRT		 0x44   //数据命令设置 地址固定
#define 		SET_DATA_ORDER     	 0X40  //数据命令设置 地址自动加1 
#define		        SET_DISPLAY        	 0X8F  //显示命令控制  脉冲宽度14/16  
#define 		SET_DSP1640_DIS          0x80  //显示关控制  
   
  
#define     VT_DLY1640           150//80//10//2000  
#define     VT_DLYNOP            10//80//10  
 
#define TM1640SLK_LOW      (PBout(13) = 0)
#define TM1640SLK_HING     (PBout(13) = 1)
#define TM1640DAT_LOW      (PBout(15) = 0)
#define TM1640DAT_HING     (PBout(15) = 1)
 
 
void Nop1640(uint16_t T_Dly);
void TM1640Start(void);
void TM1640Stop(void);
void TM1640WriteByte(uint8_t date);
void TM1640_Init(uint8_t InValue);
void TM1640_SendData(uint8_t Addr1640, uint8_t *a, uint8_t DataLong);
void TM1640_InitFirst(void);
void TM1640_Refresh(void);
void TM1640_UpdateNum(uint8_t num /*1-4*/, uint8_t value/*0-9*/);

void TM1640_example(void);
#endif // !__BSP_AIP1640_H__
